/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package alex;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Administrador
 */
public class Buffer {

    public class ExcepcionArchivoNoExiste extends Exception {
        public ExcepcionArchivoNoExiste(String NombreArchivo){
        super ("No se encontró el archivo "+ NombreArchivo + " - Análisis abortado");
        }
    }

    static public final char EOF = (char) -1;

    private char[] buffer = new char[4096];
    private FileReader fr;
    private BufferedReader entrada;
    private static int LineaNro = 1;

    public Buffer(){

    }

    public void abrirArchivo(String file) throws ExcepcionArchivoNoExiste {
        File f = new File( file );
        try {
            entrada = new BufferedReader(new FileReader(f));
        } catch (FileNotFoundException ex) {
            throw new ExcepcionArchivoNoExiste(file);
            
        }
    }

    public void cerrarArchivo(){
        try {
            entrada.close();
        } catch (IOException ex) {
            Logger.getLogger(Buffer.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public char getChar(){
        int car;
        char caracter = ' ';
        
        try {
            entrada.mark(1);
            car = entrada.read();
            caracter =(char) car;

            if (caracter == (char) 10) {
                LineaNro++;
            }
        }
        catch (Exception E) { System.out.println(E.getMessage());}        
        
        return caracter;
   }

    public void retroceder() {

        try {
            entrada.reset();
        } catch (Exception e) {

        }
    }

    public int getNumeroLinea(){
        return LineaNro;
    }


}
